package cn.jly.bigdata.spark.core

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * @author lanyangji
 * @date 2019/11/24 10:47
 */
object Spark02_expr1 {

  def main(args: Array[String]): Unit = {

    // local模式

    // 创建 SparkConf 对象
    // 这边也自定义了本地的模式（分配多少个cpu）
    // app id
    val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("wordCount")

    // 创建spark上下文对象，SparkContext -> sc
    val sc = new SparkContext(sparkConf)

    // map算子
    val listRdd: RDD[Int] = sc.makeRDD(1 to 10)

    val i = 10
    //val user = new User

    // 所有RDD算子的计算功能，由 executor 来执行
    // 上面 i 药经过序列化，由 driver 端传递给 executor
    // 能传输的都要是能序列化的
    val mapRdd: RDD[Int] = listRdd.map(_ * i)
    // user对象必须要能序列化
    //val mapRdd: RDD[Int] = listRdd.map(user.add(_))

    val resRdd: Array[Int] = mapRdd.collect

    println(s"resRdd = ${resRdd.mkString(",")}")

  }
}
